#include "RuedaSecundaria.h"

#define PI 3.14159265

/*
*	Seteos RUEDA SECUNDARIA
*	cantRayos = 9
*	radio = 4
*	cantSoldaduras = 3
*	separacionDiscos = 1
*/
RuedaSecundaria::RuedaSecundaria() : Rueda(9, 4, 3, 1)
	{
	for(int i=0;i<3;i++)
		this->cabina[i] = new Cabina();
	}

RuedaSecundaria::~RuedaSecundaria()
	{
	for(int i=0;i<3;i++)
		delete this->cabina[i];
	}

void RuedaSecundaria::dibujar(int tiempoDurEscena)
	{
	glPushMatrix();
	
	/*	nAngle: indica el angulo de giro que se va produciendo para soldar las cabinas a la rueda secundaria.	*/
	GLfloat nAngle = 360.0 / this->cantidadSoldaduras;
	GLfloat angle = 0.0;
	GLfloat radio = this->disco->getRadioDisco();
	GLfloat angunlo_rotacion = (this->getVelAngular()*tiempoDurEscena*2);
	/*	Dibujo las cabinas.	*/
	for(int i =0; i< 3;i++) {
		glPushMatrix();
		/*	Seteo el color marron de la cabina.	*/
		glColor3f(0.8, 0.4, 0.0);
		/*	Traslado la cabina para que quede siempre vertical (no rotar!).	*/
		glTranslatef(radio*cos((angle + angunlo_rotacion)*PI/180.0), -1* (GLfloat)this->separacionDiscos/2, radio*sin((angle + angunlo_rotacion)*PI/180.0));
		/*	Escalo la cabina para que entre dentro de la rueda secundaria.	*/
		glScalef(0.25, 0.25, 0.25);
		/*	Traslado la cabina para que la punta quede sobre los soportes.	*/
		glTranslatef(0.0, 0.0, -(CABINA_H + VENTANA_H + CABINA_W - VENTANA_W + TECHO_H));
		/*	Dibujo la cabina.	*/
		this->cabina[i]->dibujar(tiempoDurEscena);
		glPopMatrix();
		angle += nAngle;
		}
	glPushMatrix();
	/*	Seteo el color verde oscuro de la rueda secundaria.	*/
	glColor3f(0.0, 0.5, 0.0);
	/*	Dibujo la rueda secundaria	*/
	glRotatef(90, 1.0, 0.0, 0.0);
	glRotatef(2*(this->getVelAngular()*tiempoDurEscena), 0.0, 0.0, 1.0);
	Rueda::dibujar(tiempoDurEscena);
	glPopMatrix();
	
	glPopMatrix();
	}

Cabina* RuedaSecundaria::getCabina(unsigned int n) {
	if(n<3)
		return this->cabina[n];
	else
		return 0;
}